iT邦幫忙

第 11 屆 iThome 鐵人賽

DAY 18
0
自我挑戰組

學習 Android Kotlin 隨筆系列 第 18

[ Day 18 ] Kotlin 基本功(三)程式語法練習

  • 分享至 

  • xImage
  •  

前言

這篇將會著重在 class 的介紹,帶入基本的物件導向觀念(Object-Oriented Programming)

Class

  • 基本觀念
    一個 class 的概念,通常包含了 state 跟 behavior ,state 通常就是該 class 的常用變數,會使用到的或者跟這個 class 有關的都會在裡面做宣告。而 behavior 很像是這個 class能夠做到哪些事情,或者一些相關的函式 (member function)

    class car {
       private var wheels: Int = 4
    
       // member function
       fun printWheelsNum() {
          print("The number of wheels: "+wheels)
       }
    }
    fun main(args: Array<String>) {
       val myCar = car() // create obj object of myClass class
       myCar.printWheelsNum()
    }
    

    class 的構造就是把一個程式的想法物件模組化,先規劃好一些功能的藍圖,之後將它給建構出來。上面的程式碼就是實作了一個 class,這個 class 的藍圖就是基於如何去形容一輛車子,車子有許多的零件,包含了輪子、品牌、速度、顏色 ... 等眾多的元件,透過 class 可以有架構的去闡述這件事情,今天我的程式碼只要知道這台車的輪子,那我就可以宣告一個變數 wheels 去紀錄,並且實作一個 member function 將該輪子數給印出來。

    那如果今天還想要知道該品牌是什麼呢?如果今天想要加入一個 funciton 做出"幫車子加油 fillUp()" 的動作呢?這些都能夠透過 class 將概念寫出來,當然啦,藍圖越有條理越簡單,寫出來的 class 會越容易去維護唷!

    • constructor
      kotlinclass 可以有很多的 constructor ,使用 init 來宣告內容,constructor 就是當該 class 被宣告的時候,會在當下就直接執行 constructor 的內容。通常會用來對該 class 賦值用,當然也可以有其他的用法唷!
    class InitOrderDemo(name: String) {
        val firstProperty = "First property: $name".also(::println)
    
        init {
            println("First initializer block that prints ${name}")
        }
    
        val secondProperty = "Second property: ${name.length}".also(::println)
    
        init {
            println("Second initializer block that prints ${name.length}")
        }
    }
    
  • inner class

    class BMW {
       private val brand: String = "BMW"
       inner class car {
          fun brand() = brand
       }
       inner class motorcycle {
          fun brand() = brand
       }
    }
    

    inner class 的意思就是 class 裡面還有一個 class,裡面的那層 class 可能會需要使用到外面 class 的變數,當宣告成 inner 的時候,才有辦法去拿取外面class的變數唷

  • data class

    data class 看起來是專門用來存放資料的 class,不去做任何 function 上的實作,在 Kotlin 上也有簡化 class constructor 的用途,讓塞資料更加方便快速。

    data class Person(val name: String, val age: Int)
    

上一篇
[ Day 17 ] Kotlin 基本功(二)程式語法練習
下一篇
[ Day 19 ] Kotlin 基本功(四)程式語法練習
系列文
學習 Android Kotlin 隨筆30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言